home *** CD-ROM | disk | FTP | other *** search
/ Delphi Developer's Kit 1996 / Delphi Developer's Kit 1996.iso / power / coolcalc / ineval.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1995-12-22  |  2.4 KB  |  106 lines

  1. unit Ineval;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, InFix, StdCtrls;
  8.  
  9. type
  10.   TfrmCalculator = class(TForm)
  11.     edtExpression: TEdit;
  12.     btn3: TButton;
  13.     lblResult: TLabel;
  14.     btn1: TButton;
  15.     btn4: TButton;
  16.     btn7: TButton;
  17.     btn2: TButton;
  18.     btn5: TButton;
  19.     btn8: TButton;
  20.     btn9: TButton;
  21.     btn6: TButton;
  22.     btn0: TButton;
  23.     btnDecimal: TButton;
  24.     btnEquals: TButton;
  25.     btnDivide: TButton;
  26.     btnMultiply: TButton;
  27.     btnMinus: TButton;
  28.     btnPlus: TButton;
  29.     lblProductDescription: TLabel;
  30.     lblProductName: TLabel;
  31.     btnExampleA: TButton;
  32.     btnClear: TButton;
  33.     btnExampleB: TButton;
  34.     btnLeftBracket: TButton;
  35.     btnRightBracket: TButton;
  36.     procedure btnExampleAClick(Sender: TObject);
  37.     procedure btn1Click(Sender: TObject);
  38.     procedure btnEqualsClick(Sender: TObject);
  39.     procedure btnClearClick(Sender: TObject);
  40.     procedure btnExampleBClick(Sender: TObject);
  41.   private
  42.     { Private declarations }
  43.   public
  44.     { Public declarations }
  45.   end;
  46.  
  47. var
  48.   frmCalculator: TfrmCalculator;
  49.  
  50. procedure addChar(Sender: TObject);
  51. procedure EvaluateExp(Const MyExpr : string);
  52.  
  53. implementation
  54.  
  55. {$R *.DFM}
  56.  
  57. procedure addChar(Sender: TObject);
  58. var
  59.     btn : TButton;
  60. begin
  61.     btn := TButton(Sender);
  62.     frmCalculator.edtExpression.Text := frmCalculator.edtExpression.Text + btn.Caption;
  63. end;
  64.  
  65. procedure EvaluateExp(Const MyExpr : string);
  66. var
  67.     MyErr    : Byte;
  68.   MyAddr : String[20];
  69.   MyResult : Real;
  70. begin
  71.     MyErr := 0;
  72.   MyResult := 0.0;
  73.   InFix.RawCalculate(MyExpr, MyResult, MyErr);
  74.   frmCalculator.lblResult.Caption := '= ' + FloatToStr(MyResult);
  75. end;
  76.  
  77. procedure TfrmCalculator.btn1Click(Sender: TObject);
  78. begin
  79.     addChar(Sender);
  80. end;
  81.  
  82. procedure TfrmCalculator.btnEqualsClick(Sender: TObject);
  83. begin
  84.     EvaluateExp(edtExpression.Text);
  85. end;
  86.  
  87. procedure TfrmCalculator.btnClearClick(Sender: TObject);
  88. begin
  89.     frmCalculator.edtExpression.Clear;
  90.     frmCalculator.lblResult.Caption := '';
  91. end;
  92.  
  93. procedure TfrmCalculator.btnExampleAClick(Sender: TObject);
  94. begin
  95.     frmCalculator.edtExpression.Text := '((10*10)-50)/10';
  96.     EvaluateExp(frmCalculator.edtExpression.Text);
  97. end;
  98.  
  99. procedure TfrmCalculator.btnExampleBClick(Sender: TObject);
  100. begin
  101.     frmCalculator.edtExpression.Text := '(10*10)/3';
  102.     EvaluateExp(frmCalculator.edtExpression.Text);
  103. end;
  104.  
  105. end.
  106.